package com.gtguigu4.search_sort.exer3;

/**
 * ClassName: BubbeSortTest
 * Package: com.gtguigu4.search_sort.exer3
 * Description:
 *      冒泡排序
 * @Author BuTang
 * @Create 2023/2/24 20:45
 * @Version 1.0

public class BubbeSortTest {
    public static void main(String[] args) {
        int[] arr = new int[]{34,43,3,2,65,7,34,5,76,34,67};
        for (int i = 0; i < arr.length-1; i++) {
            for (int j = 0; j <arr.length-1; j++) {//此处 j< arr.length - 1-i会更好，因为这里不许要和最后的比了
                if (arr[j] >= arr[j+1]) {
                    int temp = arr[j];
                    arr[j] = temp;
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }

            }
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
        }
        }
    }
 */

class Test19BubbleSort2 {
    public static void main(String[] args) {
        int[] arr = {1, 3, 5, 7, 9};


        //从小到大排序
        for (int i = 0; i < arr.length - 1; i++) {
            boolean flag = true;//假设数组已经是有序的
            for (int j = 0; j < arr.length - 1 - i; j++) {
                //希望的是arr[j] < arr[j+1]
                if (arr[j] > arr[j + 1]) {
                    //交换arr[j]与arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;

                    flag = false;//如果元素发生了交换，那么说明数组还没有排好序
                    //

                }
            }
            if (flag) {//这里如果是true了后，那么则表示前一次的排序比较都是正确的，不需要执行下一次排序了，那么就直接跳出循环
                break;
            }
        }
    }
}
